﻿#define _CRT_SECURE_NO_WARNINGS 1

//删除指定的数
//先输入10个整数存放在数组中，再输入一个整数n
//删除数组中所有等于n的数字，数组中剩余的数组保证数组的最前面，打印剩余的数字。

//测试1：
//输入：
//1 2 3 4 5 4 5 6 1 6
//4 
//输出：
//1 2 3 5 5 6 1 6

//测试2：
//输入：
//1 2 3 4 5 6 7 8 9 10
//17
//输出：
//1 2 3 4 5 6 7 8 9 10

#include<stdio.h>

int main()
{
	int arr[10] = { 0 };
	int del = 0;
	int i = 0;

	//输⼊
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &arr[i]);
	}
	scanf("%d", &del);

	//删除
	int j = 0;

	for (i = 0; i < 10; i++)
	{
		//若当前数与给定值不相同，不需要删除，将其填⼊第j个位置，将j后移
		if (arr[i] != del)
			arr[j++] = arr[i];
	}

	//打印
	for (i = 0; i < j; i++)
	{
		printf("%d ", arr[i]);
	}

	return 0;
}

//解法思路：
//使用两个指针i和j 。
//1. i从前往后扫描整个数组， j记录当前剩余的数字应该放在数组的哪个位置。
//2. 如果当前数字不等于给定整数，就将该数字放在数组中的位置j，然后将j自增 1。
//3. 这样，j指向的位置就是数组中下⼀个剩余数字应该放置的位置。
//4. 最后，j的值为删除后的数组⻓度，将数组中前j个数输出即可。
